/*
 * Copyright (c) 2023 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * @file Meta.h
 *
 * @brief Declares metadata types
 * used by the Hardware Driver Interfaces (HDIs) of this module.
 *
 * @since 4.0
 * @version 2.0
 */

package ohos.hdi.camera.v1_1;

enum CameraAbilitySection {
    OHOS_ABILITY_STATIC = 0,
    OHOS_ABILITY_EXPOSURE,
    OHOS_ABILITY_FOCUS,
    OHOS_ABILITY_FLASH,
    OHOS_ABILITY_CONFIGURATIONS,
    OHOS_ABILITY_PHOTO,
    OHOS_ABILITY_VIDEO,
    OHOS_ABILITY_FACE,
    OHOS_ABILITY_ZOOM,
    OHOS_ABILITY_MUTE,
    OHOS_ABILITY_FPS,

    OHOS_CONTROL_EXPOSURE,
    OHOS_CONTROL_FOCUS,
    OHOS_CONTROL_JPEG,
    OHOS_CONTROL_FLASH,
    OHOS_CONTROL_PHOTO,
    OHOS_CONTROL_VIDEO,
    OHOS_CONTROL_FACE,
    OHOS_CONTROL_ZOOM,
    OHOS_CONTROL_MUTE,
    OHOS_CONTROL_FPS,
};

enum CameraAbilitySectionStart {
    OHOS_ABILITY_STATIC_START = OHOS_ABILITY_STATIC << 16,
    OHOS_ABILITY_EXPOSURE_START = OHOS_ABILITY_EXPOSURE << 16,
    OHOS_ABILITY_FOCUS_START = OHOS_ABILITY_FOCUS << 16,
    OHOS_ABILITY_FLASH_START = OHOS_ABILITY_FLASH << 16,
    OHOS_ABILITY_CONFIGURATIONS_START = OHOS_ABILITY_CONFIGURATIONS << 16,
    OHOS_ABILITY_PHOTO_START = OHOS_ABILITY_PHOTO << 16,
    OHOS_ABILITY_VIDEO_START = OHOS_ABILITY_VIDEO << 16,
    OHOS_ABILITY_FACE_START = OHOS_ABILITY_FACE << 16,
    OHOS_ABILITY_ZOOM_START = OHOS_ABILITY_ZOOM << 16,
    OHOS_ABILITY_MUTE_START = OHOS_ABILITY_MUTE << 16,
    OHOS_ABILITY_FPS_START = OHOS_ABILITY_FPS << 16,

    OHOS_CONTROL_EXPOSURE_STATE = OHOS_CONTROL_EXPOSURE << 16,
    OHOS_CONTROL_FOCUS_START = OHOS_CONTROL_FOCUS << 16,
    OHOS_CONTROL_JPEG_START = OHOS_CONTROL_JPEG << 16,
    OHOS_CONTROL_FLASH_START = OHOS_CONTROL_FLASH << 16,
    OHOS_CONTROL_PHOTO_START = OHOS_CONTROL_PHOTO << 16,
    OHOS_CONTROL_VIDEO_START = OHOS_CONTROL_VIDEO << 16,
    OHOS_CONTROL_FACE_START = OHOS_CONTROL_FACE << 16,
    OHOS_CONTROL_ZOOM_START = OHOS_CONTROL_ZOOM << 16,
    OHOS_CONTROL_MUTE_START = OHOS_CONTROL_MUTE << 16,
    OHOS_CONTROL_FPS_START = OHOS_CONTROL_FPS << 16,
};

enum CameraDeviceMetataTag {
    // static property 
    OHOS_ABILITY_CAMERA_POSITION = OHOS_ABILITY_STATIC_START,
    OHOS_ABILITY_CAMERA_TYPE,
    OHOS_ABILITY_CAMERA_CONNECTION_TYPE,
    OHOS_ABILITY_STATIC_END,

    // exposure ability
    OHOS_ABILITY_EXPOSURE_MODES = OHOS_ABILITY_EXPOSURE_START,
    OHOS_ABILITY_AE_COMPENSATION_RANGE,
    OHOS_ABILITY_AE_COMPENSATION_STEP,
    OHOS_ABILITY_EXPOSURE_END,

    // exposure control
    OHOS_CONTROL_AE_COMPENSATION = OHOS_CONTROL_EXPOSURE_START,
    OHOS_CONTROL_AE_REGIONS, // regions or point ?
    OHOS_CONTROL_EXPOSURE_STATE,
    OHOS_CONTROL_EXPOSURE_END,

    // focus ability
    OHOS_ABILITY_FOCUS_MODES = OHOS_ABILITY_FOCUS_START,
    OHOS_ABILITY_FOCAL_LENGTH, // Is it appropriate to put it here ？
    OHOS_ABILITY_FOCUS_END,

    // focus control
    OHOS_CONTROL_FOCUS_MODE = OHOS_CONTROL_FOCUS_START,
    OHOS_CONTROL_AF_REGIONS,
    OHOS_CONTROL_FOCUS_STATE,
    OHOS_CONTROL_FOCUS_END,

    // jpeg control
    OHOS_CONTROL_JPEG_QUALITY = OHOS_CONTROL_JPEG_START,
    OHOS_CONTROL_JPEG_ORIENTATION,
    OHOS_CONTROL_JPEG_GPS_COORDINATES,
    OHOS_CONTROL_JPEG_END,

    // flash ability
    OHOS_ABILITY_FLASH_MODES = OHOS_ABILITY_FLASH_START,
    OHOS_ABILITY_FLASH_END,

    // flash control
    OHOS_CONTROL_FLASH_MODE = OHOS_CONTROL_FLASH_START,
    OHOS_CONTROL_FLASH_STATE,
    OHOS_CONTROL_FLASH_END,

    // stream ability
    OHOS_ABILITY_STREAM_AVAILABLE_BASIC_CONFIGURATIONS,
    OHOS_ABILITY_STREAM_AVAILABLE_EXTENDED_CONFIGURATIONS,

    // photo ability
    OHOS_ABILITY_PHOTO_MIRROR_SUPPORTED = OHOS_ABILILTY_PHOTO_START,
    OHOS_ABILITY_PHOTO_END,

    // photo control
    OHOS_CONTROL_PHOTO_MIRROR_SWITCH = OHOS_CONTROL_PHOTO_START,
    OHOS_CONTROL_PHOTO_END,

    // zoom ability
    OHOS_ABILITY_ZOOM_RATIO_RANGE = OHOS_ABILITY_ZOOM_START,
    OHOS_ABILITY_ZOOM_END,

    // zoom control
    OHOS_CONTROL_ZOOM_RATIO = OHOS_CONTROL_ZOOM_START,
    OHOS_CONTROL_ZOOM_END,

    // face detect ability
    OHOS_ABILITY_STATISTICS_FACE_DETECT_MODES = OHOS_ABILITY_FACE_DETECT_START,
    OHOS_ABILITY_FACE_DETECT_END,

    // face detect control
    OHOS_CONTROL_STATISTICS_FACE_DETECT_MODE = OHOS_CONTROL_FACE_DETECT_START,
    OHOS_CONTROL_FACE_DETECT_END,

    // mute ability
    OHOS_ABILITY_MUTE_MODES = OHOS_ABILITY_MUTE_START,
    OHOS_ABILITY_MUTE_END,

    // mute control
    OHOS_CONTROL_MUTE_MODE = OHOS_CONTROL_MUTE_START,
    OHOS_CONTROL_MUTE_END,

    // video ability
    OHOS_ABILITY_VIDEO_STABILIZATION_MODES = OHOS_ABILITY_VIDEO_START,
    OHOS_ABILITY_VIDEO_END,

    // video control
    OHOS_CONTROL_VIDEO_STABILIZATION_MODE = OHOS_CONTROL_VIDEO_START,
    OHOS_CONTROL_VIDEO_END,

    // fps ability
    OHOS_ABILITY_FPS_RANGES = OHOS_ABILITY_FPS_START,
    OHOS_ABILITY_FPS_END,

    // fps control
    OHOS_CONTROL_FPS_RANGES = OHOS_CONTROL_FPS_START,
    OHOS_CONTROL_FPS_END,

    // misc ability
    OHOS_ABILITY_SENSOR_ORIENTATION = OHOS_ABILITY_MISC_START,
    OHOS_ABILITY_MISC_END,
};
